# -*- coding: utf-8 -*-
"""
@Time    : 2024/9/6 16:00 
@Author  : ZhangShenao 
@File    : 6.变量的作用域.py 
@Desc    : 变量的作用域

在实际开发中,我们应该尽量减少对全局变量的使用
因为全局变量的作用域和影响过于广泛,可能会发生意料之外的修改和使用
除此之外全局变量比局部变量拥有更长的生命周期,可能导致对象占用的内存长时间无法被垃圾回收

事实上,减少对全局变量的使用,也是降低代码之间耦合度的一个重要举措,同时也是对迪米特法则的践行。
"""


# 定义函数
def foo() -> None:
    # 这里的变量a定义在函数内部
    # 它是一个局部变量(local variable)
    # 属于局部作用域
    # 修改局部变量a,并不会影响全局变量a
    # a = 2

    # 如果想在函数内部修改全局变量,可以使用global关键字
    # global关键字可以指示一个变量为全局作用域
    global a
    a = 2

    # 如果global声明的变量没有在全局变量中声明,那么它会将该变量置于全局作用域
    global b
    b = 3
    print(f"在函数foo()内部，a = {a}")
    print(f"在函数foo()内部，b = {b}")


if __name__ == '__main__':
    # 这里的变量a是一个全局变量(global variable)
    # 它没有定义在任何函数内部
    # 属于全局作用域
    a = 1
    foo()
    print(f"在函数foo()外部，a = {a}")
    print(f"在函数foo()内部，b = {b}")  # 这里的全局变量b是在函数foo()内部声明的
